#pragma once

#include "PortIndex.h" // Needed for PortObjectPair

namespace RoomFW {


// Message Id type
//
typedef uint32_t MessageID;
const MessageID INVALID_MESSAGE_ID = -1;

//
// Payload ID type.
//
typedef uint32_t PayloadTypeId;
const PayloadTypeId PTID_NULL = 0;
const PayloadTypeId PTID_TIMER = 1;
const PayloadTypeId PTID_ERROR = 2;
const PayloadTypeId PTID_BASE = 3;

//
// Contract/Protocol ID type
//
typedef uint32_t ContractTypeId;
const ContractTypeId CTID_NULL = 0;
const ContractTypeId CTID_BASE = 1;

// Object Id type
//
typedef uint32_t ObjectId;
const ObjectId OID_NULL = 0;
const ObjectId OID_BASE = 1;


// <Object Id, Port Index> Pair.
typedef std::pair<ObjectId, PortIndex> ObjectPortPair;


// Archive Types
//
typedef ::boost::archive::binary_oarchive oarchive;
typedef ::boost::archive::binary_iarchive iarchive;


// Handle array
//
typedef std::vector<HANDLE> HandleArray;


}
